package com.ftg.learn.privilege.service;

import com.ftg.learn.privilege.entity.Dept;
import com.ftg.learn.privilege.mapper.DeptMapper;
import com.ftg.learn.privilege.util.ResultType;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 部门表的业务处理类
 * @Service 把当前类，做为一个业务处理类完成容器注入功能
 * @author KangJx
 * @date 2021/5/28
 */
@Service
public class DeptService {

    @Autowired
    private DeptMapper deptMapper;

    /**
     * 这是查询全部部门的方法
     * @return
     */
    public List<Dept> showAll(){
        //大段业务处理 （业务太简单了）

        //调用mapper里面的方法
        return deptMapper.showAll();
    }

    /**
     * 用户名判断 问题
     * @param name
     * @return
     */
    public List<Dept> showAllForName(String name){

        //逻辑判断
        if(null == name || name.equals("") || name.length() == 0){
            return null;
        }

        //args 错误条件判断
        String[] args = {"你大爷的","你大哥的"};
        for(String str : args){
            if(name.contains(str)){
                return null;
            }
        }
        return deptMapper.showAllForName(name);
    }

    public List<Dept> gtlt(Integer p1, Integer p2) {

        //自己去写一些判断
        return deptMapper.gtlt(p1,p2);
    }

    /**
     * 添加操作
     * @param dept 实体类
     * @return
     */
    public int saveDept(Dept dept) {
        if(null != dept){
            return deptMapper.saveDept(dept);
        }
        return -1;
    }

    /**
     * 这是一个通过主键完成修改的操作
     * java 面向对象的语言
     *   map 有问题  --- 封装  java类 构建方法(...)
     * @param dept
     * @return
     */
    public ResultType modifyDept(Dept dept) {
        ResultType rt = null;
        if(null != dept && dept.getDeptno() > 0){
            //判断 当前部门是否还存在
            List<Dept> list = deptMapper.findByPrimary(dept.getDeptno());
            if(list == null || list.isEmpty()){
                rt = new ResultType(2,0,"当前数据不存在或者已删除！！！");
            }else{
                int num = deptMapper.updateDept(dept);
                if(num == 1){
                    rt = new ResultType(0,num,"当前操作已成功！！！");
                }else{
                    rt = new ResultType(0,0,"当前操作已成功！！！但影响0行！！！");
                }
            }
        }else{
            rt = new ResultType(1,0,"对不起请传入相应的参数！！！");
        }
        return rt;
    }

    /**
     * 删除操作
     * @param deptno 主键
     * @return
     */
    public ResultType deleteDeptno(Integer deptno){
        if(null == deptno){
            return new ResultType(1,0,"对不起请传入相应的参数！！！");
        }else{
            List<Dept> list = deptMapper.findByPrimary(deptno);
            if(list == null || list.size() == 0){
                return new ResultType(1,0,"当前数据已删除！！！");
            }else{
                int num = deptMapper.deleteDept(deptno);
                return new ResultType(0,num,"操作已成功！！！");
            }
        }
    }

}
